package com.chouren.goandroid.http.parser;

import java.io.IOException;
import java.io.InputStream;

import com.chouren.goandroid.http.client.HttpClientConfig;

/**
 * 数据解析的抽象类
 * @purpose
 * @description
 * @version 1.0 
 * @author Administrator
 * @date 2014年7月1日
 * @update 2014年7月1日
 */
public abstract class DataParser<T> implements IDataParser<T> {
	protected int buffSize = HttpClientConfig.DEFAULT_BUFFER_SIZE;
	private T data;
	protected int readLength;
	protected boolean doStatistics;
	
	/**
	 * 读取http的输入流，交给具体的解析类去解析
	 * @param is		输入流
	 * @param len		读取长度
	 * @param charSet	编码格式
	 * @return	读取到的数据
	 * @throws IOException 
	 */
	public final T readInputStream(InputStream is, int len, String charSet) throws IOException {
		if(is != null) {
			if(len <= 0) {
				len = buffSize;
			}else if(len > 1024000) {
				len = 1024000;
			}
			data = parseData(is, len, charSet);
		}
		return data;
	}
	
	/**
	 * 获取数据
	 */
	public T getData() {
		return this.data;
	}
	
	/**
	 * 获取读取的长度
	 */
	public int getReadLength() {
		return this.readLength;
	}
}
